package com.googlecode.jtoy.patterns.monostate;

/**
 * 单态模式
 * 
 * 请注意这两个模式的区别，在于一个关注行为，而另一个关注结构。Singleton模式强调结构上的单一性。它防止创建多个对象实例。相反，Monostate模式则强制行为上的单一性，
 * 而没有加强结构方面的限制。为了强调这个区别，请考虑如下事实:Monostate的测试用例对Singleton类是有效的，但是Singleton的测试用例对却远不适用于Monostate类。
 * 
 * Monostate模式的好处在于：
 * 透明性：使用Monstate对象和使用常规（regular)对象没有什么区别。使用者不需要知道对象是Monostate。
 * 可派生性：Monostate的派生类都是Monostate。事实上，Monostate的所有派生类都是同一个Monostate的一部分。它们共享相同的静态变量。
 * 多态性：同于Monostate的方式不是静态的，所以可以在使用派生类中覆写它们。因此，不同的派生类可以基于相同的静态变量表现出不同的行为。
 * 
 * Monostate模式的代价在于：
 * 不可转换性：不能透过派生类把常规类转换成Monostate类。
 * 效率问题：因为Monostate是真正的对象，所以会导致许多的创建和摧毁开销。
 * 内存占用：即使从未使用Monostate，它的变量也要占据内存空间。
 * 平台局限性：Monostate不能跨多个JVM或者多个平台工作。
 * 
 * @author shangxj
 * @date Jun 19, 2011 5:12:13 PM
 */
public class Monostate {

	private static int itsX = 0;

	public Monostate() {

	}

	public void setX(int x) {

		itsX = x;
	}

	public int getX() {

		return itsX;
	}
}
